<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Number Protocol &mdash; Python v2.6.2 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2.6.2',
        COLLAPSE_MODINDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within Python v2.6.2 documentation"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="copyright" title="Copyright" href="../copyright.html" />
    <link rel="top" title="Python v2.6.2 documentation" href="../index.html" />
    <link rel="up" title="Abstract Objects Layer" href="abstract.html" />
    <link rel="next" title="Sequence Protocol" href="sequence.html" />
    <link rel="prev" title="Object Protocol" href="object.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
 

  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../modindex.html" title="Global Module Index"
             accesskey="M">modules</a> |</li>
        <li class="right" >
          <a href="sequence.html" title="Sequence Protocol"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="object.html" title="Object Protocol"
             accesskey="P">previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="../index.html">Python v2.6.2 documentation</a> &raquo;</li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="abstract.html" accesskey="U">Abstract Objects Layer</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="number-protocol">
<span id="number"></span><h1>Number Protocol<a class="headerlink" href="#number-protocol" title="Permalink to this headline">¶</a></h1>
<dl class="cfunction">
<dt id="PyNumber_Check">
int <tt class="descname">PyNumber_Check</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Check" title="Permalink to this definition">¶</a></dt>
<dd>Returns <tt class="docutils literal"><span class="pre">1</span></tt> if the object <em>o</em> provides numeric protocols, and false otherwise.
This function always succeeds.</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Add">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Add</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Add" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of adding <em>o1</em> and <em>o2</em>, or <em>NULL</em> on failure.  This is the
equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">+</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Subtract">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Subtract</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Subtract" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of subtracting <em>o2</em> from <em>o1</em>, or <em>NULL</em> on failure.  This is
the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">-</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Multiply">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Multiply</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Multiply" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of multiplying <em>o1</em> and <em>o2</em>, or <em>NULL</em> on failure.  This is
the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">*</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Divide">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Divide</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Divide" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of dividing <em>o1</em> by <em>o2</em>, or <em>NULL</em> on failure.  This is the
equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">/</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_FloorDivide">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_FloorDivide</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_FloorDivide" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Return the floor of <em>o1</em> divided by <em>o2</em>, or <em>NULL</em> on failure.  This is
equivalent to the &#8220;classic&#8221; division of integers.</p>
<p>
<span class="versionmodified">New in version 2.2.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_TrueDivide">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_TrueDivide</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_TrueDivide" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Return a reasonable approximation for the mathematical value of <em>o1</em> divided by
<em>o2</em>, or <em>NULL</em> on failure.  The return value is &#8220;approximate&#8221; because binary
floating point numbers are approximate; it is not possible to represent all real
numbers in base two.  This function can return a floating point value when
passed two integers.</p>
<p>
<span class="versionmodified">New in version 2.2.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Remainder">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Remainder</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Remainder" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the remainder of dividing <em>o1</em> by <em>o2</em>, or <em>NULL</em> on failure.  This is
the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">%</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Divmod">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Divmod</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Divmod" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-116">See the built-in function <a title="divmod" class="reference external" href="../library/functions.html#divmod"><tt class="xref docutils literal"><span class="pre">divmod()</span></tt></a>. Returns <em>NULL</em> on failure.  This is
the equivalent of the Python expression <tt class="docutils literal"><span class="pre">divmod(o1,</span> <span class="pre">o2)</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Power">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Power</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o3</em><big>)</big><a class="headerlink" href="#PyNumber_Power" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-117">See the built-in function <a title="pow" class="reference external" href="../library/functions.html#pow"><tt class="xref docutils literal"><span class="pre">pow()</span></tt></a>. Returns <em>NULL</em> on failure.  This is the
equivalent of the Python expression <tt class="docutils literal"><span class="pre">pow(o1,</span> <span class="pre">o2,</span> <span class="pre">o3)</span></tt>, where <em>o3</em> is optional.
If <em>o3</em> is to be ignored, pass <a title="Py_None" class="reference external" href="none.html#Py_None"><tt class="xref docutils literal"><span class="pre">Py_None</span></tt></a> in its place (passing <em>NULL</em> for
<em>o3</em> would cause an illegal memory access).</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Negative">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Negative</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Negative" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the negation of <em>o</em> on success, or <em>NULL</em> on failure. This is the
equivalent of the Python expression <tt class="docutils literal"><span class="pre">-o</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Positive">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Positive</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Positive" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns <em>o</em> on success, or <em>NULL</em> on failure.  This is the equivalent of the
Python expression <tt class="docutils literal"><span class="pre">+o</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Absolute">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Absolute</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Absolute" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-118">Returns the absolute value of <em>o</em>, or <em>NULL</em> on failure.  This is the equivalent
of the Python expression <tt class="docutils literal"><span class="pre">abs(o)</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Invert">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Invert</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Invert" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the bitwise negation of <em>o</em> on success, or <em>NULL</em> on failure.  This is
the equivalent of the Python expression <tt class="docutils literal"><span class="pre">~o</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Lshift">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Lshift</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Lshift" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of left shifting <em>o1</em> by <em>o2</em> on success, or <em>NULL</em> on
failure.  This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">&lt;&lt;</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Rshift">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Rshift</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Rshift" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of right shifting <em>o1</em> by <em>o2</em> on success, or <em>NULL</em> on
failure.  This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">&gt;&gt;</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_And">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_And</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_And" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the &#8220;bitwise and&#8221; of <em>o1</em> and <em>o2</em> on success and <em>NULL</em> on failure.
This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">&amp;</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Xor">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Xor</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Xor" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the &#8220;bitwise exclusive or&#8221; of <em>o1</em> by <em>o2</em> on success, or <em>NULL</em> on
failure.  This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">^</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Or">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Or</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_Or" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the &#8220;bitwise or&#8221; of <em>o1</em> and <em>o2</em> on success, or <em>NULL</em> on failure.
This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">|</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceAdd">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceAdd</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceAdd" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of adding <em>o1</em> and <em>o2</em>, or <em>NULL</em> on failure.  The operation
is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of the Python
statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">+=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceSubtract">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceSubtract</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceSubtract" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of subtracting <em>o2</em> from <em>o1</em>, or <em>NULL</em> on failure.  The
operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of
the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">-=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceMultiply">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceMultiply</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceMultiply" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of multiplying <em>o1</em> and <em>o2</em>, or <em>NULL</em> on failure.  The
operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of
the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">*=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceDivide">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceDivide</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceDivide" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of dividing <em>o1</em> by <em>o2</em>, or <em>NULL</em> on failure.  The
operation is done <em>in-place</em> when <em>o1</em> supports it. This is the equivalent of
the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">/=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceFloorDivide">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceFloorDivide</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceFloorDivide" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the mathematical floor of dividing <em>o1</em> by <em>o2</em>, or <em>NULL</em> on failure.
The operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent
of the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">//=</span> <span class="pre">o2</span></tt>.</p>
<p>
<span class="versionmodified">New in version 2.2.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceTrueDivide">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceTrueDivide</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceTrueDivide" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Return a reasonable approximation for the mathematical value of <em>o1</em> divided by
<em>o2</em>, or <em>NULL</em> on failure.  The return value is &#8220;approximate&#8221; because binary
floating point numbers are approximate; it is not possible to represent all real
numbers in base two.  This function can return a floating point value when
passed two integers.  The operation is done <em>in-place</em> when <em>o1</em> supports it.</p>
<p>
<span class="versionmodified">New in version 2.2.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceRemainder">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceRemainder</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceRemainder" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the remainder of dividing <em>o1</em> by <em>o2</em>, or <em>NULL</em> on failure.  The
operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of
the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">%=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlacePower">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlacePower</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o3</em><big>)</big><a class="headerlink" href="#PyNumber_InPlacePower" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-119">See the built-in function <a title="pow" class="reference external" href="../library/functions.html#pow"><tt class="xref docutils literal"><span class="pre">pow()</span></tt></a>. Returns <em>NULL</em> on failure.  The operation
is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of the Python
statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">**=</span> <span class="pre">o2</span></tt> when o3 is <a title="Py_None" class="reference external" href="none.html#Py_None"><tt class="xref docutils literal"><span class="pre">Py_None</span></tt></a>, or an in-place variant of
<tt class="docutils literal"><span class="pre">pow(o1,</span> <span class="pre">o2,</span> <span class="pre">o3)</span></tt> otherwise. If <em>o3</em> is to be ignored, pass <a title="Py_None" class="reference external" href="none.html#Py_None"><tt class="xref docutils literal"><span class="pre">Py_None</span></tt></a>
in its place (passing <em>NULL</em> for <em>o3</em> would cause an illegal memory access).</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceLshift">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceLshift</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceLshift" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of left shifting <em>o1</em> by <em>o2</em> on success, or <em>NULL</em> on
failure.  The operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the
equivalent of the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">&lt;&lt;=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceRshift">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceRshift</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceRshift" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the result of right shifting <em>o1</em> by <em>o2</em> on success, or <em>NULL</em> on
failure.  The operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the
equivalent of the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">&gt;&gt;=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceAnd">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceAnd</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceAnd" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the &#8220;bitwise and&#8221; of <em>o1</em> and <em>o2</em> on success and <em>NULL</em> on failure. The
operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of
the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">&amp;=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceXor">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceXor</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceXor" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the &#8220;bitwise exclusive or&#8221; of <em>o1</em> by <em>o2</em> on success, or <em>NULL</em> on
failure.  The operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the
equivalent of the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">^=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_InPlaceOr">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_InPlaceOr</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o2</em><big>)</big><a class="headerlink" href="#PyNumber_InPlaceOr" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Returns the &#8220;bitwise or&#8221; of <em>o1</em> and <em>o2</em> on success, or <em>NULL</em> on failure.  The
operation is done <em>in-place</em> when <em>o1</em> supports it.  This is the equivalent of
the Python statement <tt class="docutils literal"><span class="pre">o1</span> <span class="pre">|=</span> <span class="pre">o2</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Coerce">
int <tt class="descname">PyNumber_Coerce</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> **p1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> **p2</em><big>)</big><a class="headerlink" href="#PyNumber_Coerce" title="Permalink to this definition">¶</a></dt>
<dd><p id="index-120">This function takes the addresses of two variables of type <a title="PyObject" class="reference external" href="structures.html#PyObject"><tt class="xref docutils literal"><span class="pre">PyObject*</span></tt></a>.
If the objects pointed to by <tt class="docutils literal"><span class="pre">*p1</span></tt> and <tt class="docutils literal"><span class="pre">*p2</span></tt> have the same type, increment
their reference count and return <tt class="docutils literal"><span class="pre">0</span></tt> (success). If the objects can be
converted to a common numeric type, replace <tt class="docutils literal"><span class="pre">*p1</span></tt> and <tt class="docutils literal"><span class="pre">*p2</span></tt> by their
converted value (with &#8216;new&#8217; reference counts), and return <tt class="docutils literal"><span class="pre">0</span></tt>. If no
conversion is possible, or if some other error occurs, return <tt class="docutils literal"><span class="pre">-1</span></tt> (failure)
and don&#8217;t increment the reference counts.  The call <tt class="docutils literal"><span class="pre">PyNumber_Coerce(&amp;o1,</span>
<span class="pre">&amp;o2)</span></tt> is equivalent to the Python statement <tt class="docutils literal"><span class="pre">o1,</span> <span class="pre">o2</span> <span class="pre">=</span> <span class="pre">coerce(o1,</span> <span class="pre">o2)</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_CoerceEx">
int <tt class="descname">PyNumber_CoerceEx</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> **p1</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> **p2</em><big>)</big><a class="headerlink" href="#PyNumber_CoerceEx" title="Permalink to this definition">¶</a></dt>
<dd>This function is similar to <a title="PyNumber_Coerce" class="reference internal" href="#PyNumber_Coerce"><tt class="xref docutils literal"><span class="pre">PyNumber_Coerce</span></tt></a>, except that it returns
<tt class="docutils literal"><span class="pre">1</span></tt> when the conversion is not possible and when no error is raised.
Reference counts are still not increased in this case.</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Int">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Int</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Int" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-121">Returns the <em>o</em> converted to an integer object on success, or <em>NULL</em> on failure.
If the argument is outside the integer range a long object will be returned
instead. This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">int(o)</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Long">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Long</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Long" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-122">Returns the <em>o</em> converted to a long integer object on success, or <em>NULL</em> on
failure.  This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">long(o)</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Float">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Float</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Float" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p id="index-123">Returns the <em>o</em> converted to a float object on success, or <em>NULL</em> on failure.
This is the equivalent of the Python expression <tt class="docutils literal"><span class="pre">float(o)</span></tt>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_Index">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_Index</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyNumber_Index" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the <em>o</em> converted to a Python int or long on success or <em>NULL</em> with a
<a title="exceptions.TypeError" class="reference external" href="../library/exceptions.html#exceptions.TypeError"><tt class="xref docutils literal"><span class="pre">TypeError</span></tt></a> exception raised on failure.</p>
<p>
<span class="versionmodified">New in version 2.5.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_ToBase">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyNumber_ToBase</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *n</em>, int<em> base</em><big>)</big><a class="headerlink" href="#PyNumber_ToBase" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the integer <em>n</em> converted to <em>base</em> as a string with a base
marker of <tt class="docutils literal"><span class="pre">'0b'</span></tt>, <tt class="docutils literal"><span class="pre">'0o'</span></tt>, or <tt class="docutils literal"><span class="pre">'0x'</span></tt> if applicable.  When
<em>base</em> is not 2, 8, 10, or 16, the format is <tt class="docutils literal"><span class="pre">'x#num'</span></tt> where x is the
base. If <em>n</em> is not an int object, it is converted with
<a title="PyNumber_Index" class="reference internal" href="#PyNumber_Index"><tt class="xref docutils literal"><span class="pre">PyNumber_Index</span></tt></a> first.</p>
<p>
<span class="versionmodified">New in version 2.6.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyNumber_AsSsize_t">
Py_ssize_t <tt class="descname">PyNumber_AsSsize_t</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *exc</em><big>)</big><a class="headerlink" href="#PyNumber_AsSsize_t" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns <em>o</em> converted to a Py_ssize_t value if <em>o</em> can be interpreted as an
integer. If <em>o</em> can be converted to a Python int or long but the attempt to
convert to a Py_ssize_t value would raise an <a title="exceptions.OverflowError" class="reference external" href="../library/exceptions.html#exceptions.OverflowError"><tt class="xref docutils literal"><span class="pre">OverflowError</span></tt></a>, then the
<em>exc</em> argument is the type of exception that will be raised (usually
<a title="exceptions.IndexError" class="reference external" href="../library/exceptions.html#exceptions.IndexError"><tt class="xref docutils literal"><span class="pre">IndexError</span></tt></a> or <a title="exceptions.OverflowError" class="reference external" href="../library/exceptions.html#exceptions.OverflowError"><tt class="xref docutils literal"><span class="pre">OverflowError</span></tt></a>).  If <em>exc</em> is <em>NULL</em>, then the
exception is cleared and the value is clipped to <em>PY_SSIZE_T_MIN</em> for a negative
integer or <em>PY_SSIZE_T_MAX</em> for a positive integer.</p>
<p>
<span class="versionmodified">New in version 2.5.</span></p>
</dd></dl>

<dl class="cfunction">
<dt id="PyIndex_Check">
int <tt class="descname">PyIndex_Check</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyIndex_Check" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns True if <em>o</em> is an index integer (has the nb_index slot of  the
tp_as_number structure filled in).</p>
<p>
<span class="versionmodified">New in version 2.5.</span></p>
</dd></dl>

</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <h4>Previous topic</h4>
            <p class="topless"><a href="object.html"
                                  title="previous chapter">Object Protocol</a></p>
            <h4>Next topic</h4>
            <p class="topless"><a href="sequence.html"
                                  title="next chapter">Sequence Protocol</a></p>
            <h3>This Page</h3>
            <ul class="this-page-menu">
              <li><a href="../_sources/c-api/number.txt"
                     rel="nofollow">Show Source</a></li>
            </ul>
          <div id="searchbox" style="display: none">
            <h3>Quick search</h3>
              <form class="search" action="../search.html" method="get">
                <input type="text" name="q" size="18" />
                <input type="submit" value="Go" />
                <input type="hidden" name="check_keywords" value="yes" />
                <input type="hidden" name="area" value="default" />
              </form>
              <p class="searchtip" style="font-size: 90%">
              Enter search terms or a module, class or function name.
              </p>
          </div>
          <script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../modindex.html" title="Global Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="sequence.html" title="Sequence Protocol"
             >next</a> |</li>
        <li class="right" >
          <a href="object.html" title="Object Protocol"
             >previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="../index.html">Python v2.6.2 documentation</a> &raquo;</li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="abstract.html" >Abstract Objects Layer</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
      &copy; <a href="../copyright.html">Copyright</a> 1990-2009, Python Software Foundation.
      Last updated on Apr 15, 2009.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
    </div>
  </body>
</html>